ShadowBot is shareware, $20. To register, send cash, check, or money order to:
ShadowBot Registration
c/o John Bafford
6 Cedar Springs Ct.
Baltimore, MD 21228
Changes in 1.2.3- 12/6/97
• Fixed a bug in makeMask() that would return unexpected results and possibly cause crashes.
• 'NOTES DELETE' = 'NOTES ERASE'
• Optimized a bunch of stuff.
• More C...
Changes in 1.2.2 - 11/23/97
• Compilied with CodeWarrior Pro 2
• Fixed a bug when processing commands that would cause an infinite loop that resulted in a crash if you gave a command with a channel that wasn't in ShadowBot's channel list.
• Worked around the "The channel you specified was not valid" error if you were using the join command.
• Notes work now. (Really!)
• Rewrote a few supporting functions in C. ShadowBot will get a major rewrite in C at some point in the future.
Changes in 1.2.1 - 10/5/97
• Fixed a bug in the botnet code that could result in crashes when the bot was DCC'd to, or whever anyone joined or left a channel on the botnet. It also made most botnet commands fail to work properly.
Changes in 1.2 - 10/5/97
• Compiled with CodeWarrior Pro 1.
• ShadowBot is now PowerPC native.
• ShadowBot is now SmartScroll aware!
• Botnet has been enabled. ShadowBot can connect to eggdrop bots, but it cannot itself accept connections yet.
• Made numerous internal code changes necessary for PowerPC support because of ShadowBot's C/Pascal hybrid code base.
• If you do a !seen on someone not in the bot's userlist, in its "I don't know a thing about" response, no longer display the name in all caps.
• Fixed bug drawing list border in userlist because the graphics port wasn't set first.
• Folder selection menu command removed.
• Logs folder must be named "Logs", DCC folder must be named "DCC", and Plugins folder must be named "Plugins". These folders MUST be in the same folder ShadowBot is in.
• The rand and poll plugins have been updated so they work.
• I think the DCC/console code is working; any command that outputs anything should work from the console now.
• Bans unbanned because they have expired are now down more intelligently; instead of making many mode changes, ShadowBot attempts to do as few mode changes as possible.
• Fixed a problem with bans where the "dontRemove" flag could be improperly set.
• Fixed a bug in fBan() where it wouldn't properly find bans, so ShadowBot could wind up with bans stuck in its internal banlist forever.
• BANLIST command shows which bans are marked as "permanant" (shitlevel = 4).
• IDENT command now ignores you if you use the command in the channel.
• Added a more userhosts button to the Owner Settings window.
• Bot Setings and Shitlist change date windows now uses Geneva 10 instead of the system font.
• Bot Settings and More Userhosts windows now center on their parent window.
• Rearranged a few items in the userlist so they'd look better.
• Fixed the operation of the Bot toggle button in the Userlist.
• ShadowBot now responds to 'WHO' botnet command.
• When opping, banning, unbanning, or kicking someone in all channels, no longer attempt to op them if ShadowBot does not have ops in that channel.
• ShadowBot is supposed to mark everyone on a channel it leaves as not in the channel and set some flags if it needs to rejoin as part of a CYCLE command, however, it wasn't doing that before. It works fine now.
• Although this isn't a perfect solution, if you give ShadowBot a channel-specific command for a channel that it's not in, but which is in the channels editor, it won't give you a channel invalid error.
• Sped up most of the LongStrings functions and several other functions that were returning strings.
• Fixed a bug in copy and paste stuff.
• Users with a protection level > 0 are no longer deopped if a server ops them following a netsplit if serverops is disallowed.
• In strings window, disable "Reset This String" button if no string is selected.
• Fixed a bug where if a user only had access in one channel and they used the ident command, they were given access on all channels.
• Fixed some problems with shitlevel = 4 bans on connect.
• Fixed a "bug" in the PONG reply that only showed up using one particular server, but was funny was that it worked fine everywhere else all this time...
• Idiot-proofed the channel name in the channels editor to not allow spaces in the channel name.
• Fixed a lot of misspellings in the balloon help.
• Use SetDialogDefaultItem() instead of custom outline button code in settings windows.
Changes in 1.1.4 - 7/3/97
• When reading in automessages file (at launch, and when the cancel button is pressed in the Automessages window), don't try to read in any data if the file size is zero.
• When automessage window is open, don't try to process any automessages.
• Fixed a really silly bug when scanning for the first available user; if ShadowBot found someone marked as deleted, it didn't change the value of one variable, so it's possible that the variable counting the number of users in the userlist could be incremented when it shouldn't. This could cause all sorts of bad problems.
• Added an option in the toggles window to require all ops to ident to the bot before they are recognized. MAKE SURE you check this setting to make sure it's what you want.
• When someone DCCs ShadowBot, if it doesn't open the connection because the person is not in the userlist, make a note in the console. Also make a note if it can't find them in the userlist when the connection is established. (This will help me track down the problems where DCC opens, then closes immediately.)
Changes in 1.1.3 - 6/13/97
• Toggle to reject people who "cloak" themselves on Global Stage servers.
• When someone idents, no longer give them access in ALL channels..just give them access in the channel they have access to, if they only have access to one.
• When processing a ban on a nick (e.g. BAN someone), in addition to making sure that the banee has a protLevel < 3, make sure the banner has a protLevel >= the banee's protLevel.
• After executing a MAP plugin, stop searching the plugin list.
• Rewrote a large portion of userlist, shitlist, and channel managment code in C.
• Fixed a minor bug when creating a new user file - the user saved wasn't the cleared user record generated.
• When setting the font/size of the settings windows, SetPort() the window first, just to be sure that we're changing the curent window.
• The Channels file from old versions of ShadowBot will not work with this version. Please delete it so ShadowBot can create a new one.
Changes in 1.1.2 - 5/27/97
• Reorganized processing of numeric commands - "important" numerics that ShadowBot processes are now checked first; more of the less necesary replies, such as end-of-lists, /USER and /SUMMON responses, etc, are ignored.
• Banlist responses (when entering channel) now displayed in proper channel.
• Streamlined the code for putting stuff in the message windows a bit.
• Sped up some of the plugins code in various places.
• Extended the plugins language- new @GETARGS and *MAXRUNNING commands, changes to *COMMAND, @IF commands and $ARGx variables, new $NUMARGS and $ARGL variables. See Plugin Language Changes in the plugins folder for more details.
• When processing list plugins, no longer extract the text that goes with the tag from the string unless the tag matches.
• Partyline console. (Text typed into this window goes into the partyline, using the name "Console").
• Rebuilt project from scratch to clean out any compiler glitches.
• Main console is now always called "Console", rather than whatever the nick of the bot is.
• When checking Server status, if connection dies and we have a problem, abort the TCP connection before we delete the connection record.
• Botnet serverok function was writing to the IRC serverstatus. This is bad. We want it to write to botnet^.serverstatus. (Botnet wasn't enabled in any released versions, so this shouldn't have affected anyone...)
• Now check ServerOK() when sending and recieving data, if we don't get noErr. Also respond to the C_PleaseClose message. Now, if ShadowBot is rejected from a server when attempting to connect ("No Authorization" or "No more connections", etc), it immediately retries connecting. Display an error message if we get an unknown connection status.
• Dealt with some issues with commands being executed from the console. (Also sped up running through botCommands just a tad, since we no longer need to check to see if from = botNick twice.)
• Fixed a bug in the die and signoff command where if anyone other than the owner used either of the commands, it would attempt to process an invalid command (and do nothing).
• Fixed a bug where using the who botnet command could change the variable that contained the number of users in the userlist (which would cause almost all of the userlist to be lost.).
• Fixed a bug in the AddNote() function that could cause a crash, and would likely cause problems if the note was viewed.
• Took out a few debugging commands.
• Fixed bug in COUNTRY command where it would not properly send replies to people who /msg'd the command.
• Fixed a bug where when channels were initialized upon joining, the name would be stored in uppercase, causing among other things, log files to have names in all caps. Fixed a similar problem when creating user memory records.
Changes in 1.1.1 - 5/14/97
• Fixed list plugins.
• Added @NONE tag in list plugins, which is displayed when the plugin is called without an argument.
• Fixed a bug in the kick command where it wouldn't kick if the person you were kicking had an access level lower than yours. (oops!)
• If you specify a channel as the first argument for a command, and the channel isn't valid, it'll tell you, rather than asking you to give it a channel.
• Fixed a bug when adding strings to the strings file.
• Fixed some bugs in DCC (I think).
• DCC messages now appear in the console, rather than the current channel window.
• When answering a DCC request, display the IP and port connecting to.
• Don't display as much stuff when connecting.
• Fixed a bug in isNumber() - if the string contained a 9, it thought it wasn't a number.
• Signoffs are now displayed in the channels the user was in, rather than the console.
• Message from the bot to itself (such as when you use a command that tells you something from the console) no longer display the the message as a notice/msg - just display it.
• A few more optimizations. More of the code is in C.
Changes in 1.1 - 4/30/97
• Scroll bars should work now.
• Page Up and Page Down keys will now scroll through message windows.
• Fixed a bug in !SHIT where !shit #channel nick ... would result in a nickban.
• !SHIT command was adding an entry to the internal bans list; the only time this should happen is when the server acknowledges the ban. (oops)
• A few more code optimizations.
• Fixed bug in Strings Editor where editing strings would mess up the strings.
• Fixed a bug when making shitlevel 4 bans.
• In Shitlist window, now display shitlevel in list.
• Fixed the cycle command when a rejoin delay was given.
• Fixed problems with shitlevel 4 bans that were already made when entering the channel.
• Fixed a bug when initiating DCC requests (as with the !chat command).
• When opping someone as a result of being opped, don't assume they have ops until we get the mode change back from the server.
• When updating the bans list as a result of being opped, do it intelligently (mode +bbb, if multiple bans are needed), and only send the bans that apply to the current channel.
• Fixed a bug where a user not in the userlist would wind up with a user number in memory of zero (pointing to the owner), which could cause some rather interesting problems, specifically with notes.
• Last seen time wasn't being updated correctly with mode changes.
• Fixed a problem with notes sent to the bot's owner not being saved.
• Fixed problem with notes where junk would be displayed instead of your notes.
• Fixed a problem where many repeated failed connection attempts could et up memory and eventually lead to a crash.
• Owner could be marked as bot when creating new Settings file, which isn't good.
• Fixed a bug processing the help file which would cause the help command to not display some information.
• ROLLCALL command removed.
• Took out the "cute" features in the kick command where
* kicking someone when you didn't have access would cause you to be kicked with the message "kick <nick> yourself, loser".
* use of the kick command with no arguments and you didn't have access to the bot would kick you with the mesasge "Kick requested by self". (If you have access, it still works.)
Changes in 1.1f15 - 4/16/97 (Timeout: 5/1/97)
• Fixed a bug where it was possible to crash when closing an idle DCC connection because ShadowBot would (start to) kill the dcc connection, but go to report the signoff on the partyline, which would trigger the kill dcc connection because the connection doesn't exist (because the user in the partyline userlist hadn't been deleted _yet_), which would trigger reporting the signoff, which would trigger the reporting, which would trigger the kill....
• Changed the protection level and shitlevel input fields to popup menus.
• Fixed a few button enabled/disabled bugs in the Userlist and Shitlist.
• Now checking DCC connection events for DNS Search not found errors. (For the Botnet.)
• Fixed a bug in logging where the time would be placed before the carrage return, instead of after it.
• More code optimizations. Connection seems noticably faster on my machine.
• Message windows pointers instead of handles.
Changes in 1.1f14 - 4/8/97 (Timeout: 5/1/97)
• 1.1f13 accidentally broke DCC. It's fixed now.
• Several minor performance increases, including using several global data structures as pointers, rather than handles, and using NewHandle, rather than NewHandleClear, when appropriate.
• When updating the channel's banlist (removing old bans), no longer immediately remove the ban from memory; wait for confirmation from server. (And in case that notification doesn't come because the bot's unbanned or something, we increment the unban time by the default unban time.)
• Accidentally broke LSDelete() in 1.1f13. You mostly saw the effects of this when text was colored or styled, especially topics. (Crashes on connect in 1.1f13.)
• Various other minor bug fixes...
• I think this may be the next-to-the-last release before the final release of 1.1. Get your bug reports in asap!
Changes in 1.1f13 - 4/5/97 (Timeout: 5/1/97)
• Botnet bug fixes.
• Instead of checking to see if the first character is a number, check to see if the entire string is a number before passing it to numeric command parsing.
• Removed the togops command (did a mode +o-o nick nick) because it can be easily implimented in a plugin and doesn't really need to be in the bot's code.
• STATS now displays the number of deleted userlist and shitlist entries. WHOIS now shows if user has password set. ACCESS and USERLIST shows if user is a bot.
• New user button in userlist now activates deactivated buttons.
• Removed all of the object oriented stuff becuase it was just overhead.
• Rewrote a some of the utility functions and the LongString stuff in C; they should be faster now (particuarally the matchMask function). Other minor changes to improve efficiency. (You certainly won't see the microseconds saved, but they're there.)
• Now open the inputwindow after ShadowBot has finished loading.
• Update the statusline after launching ShadowBot; otherwise, if it doesn't try to connect, it's a blank window that doesn't look right.
• Added a welcome message the first time you run ShadowBot.
• Fixed a bug that was very likely to cause crashes when ShadowBot was connecting to servers. (How did this one manage to remain undetected for so long?)
• Recompiled with CW Pascal 1.7.2.
• Fixed a bug with the SHIT command where banning a mask instead of a nick would cause it to create the shitlist entry wrong.
• Completely rewrote the notes commands. Delete your current Notes file.
Changes in 1.1f12 - 3/23/97 (Timeout: 5/1/97)
• Fixed a bug in the userlist introduced in 1.1f11 where the wrong names would be put into the list.
• Can't make a deleted user into a bot.
• Fixed bug with deleting bots.
Changes in 1.1f11 - 3/20/97 (Timeout: 5/1/97)
• Fixed a minor bug that would cause notices and private messages to be displayed in the console as unprocessed.
• Reompiled with pointer-based objects and method optimization. (Should speed up portions, especially the partyline.)
• WHOM command displays idle times in days, hours, minutes, and seconds, rather than just seconds.
• AWAY command now sends a mesasage saying you are away away message and displays confirmation when you go away or unaway..
• When checking to see if we have ops for certain commands, check first to make sure the channel (which may or may not be specified) is valid.
• A tad more optimization in server command processing.
• Items in the Windows menu that aren't attached to a window are dimmed.
• Changed the bot selection method in the Botnet window to a popup menu.
• Added Bot Settings button to Userlist and Botnet windows.
Changes in 1.1f10 - 3/11/97 (Timeout: 4/1/97)
• Fixed possible crash when servers change topics.
• If server is idle for five minutes try and send it a ping. If the connection died, we'll get a connection error and reconnect.
• Made some changes that should increase the reliability of the interaction between DCC and the botnet userlist.
• DCC was sometimes getting a 'please close' connection event, and it wasn't prepared for this possibility, which causes a CHK error in pre-release versions and can mess up the DCC chain in all versions.
• Fixed bug in kick command that switched the protection level and noError errors.
• Recompiled with CW Pascal 1.7.1 compiler.
• Fixed a bug where it was likely trying to use a plugin that had been removed would cause a crash because the bot was trying to delete memory that was never allocated.
• ME command modified for use with partyline.
• Made several more tweaks in the botnet/partyline.
• Removed some stuff that was displayed in debug mode. This will in general reduce overhead and speed up execution, especially if debug mode is on.
• Inputwindow no longer created as the front window, so the splash screen stays hilighted.
• Worked around a possible CHK error/crash if the bot couldn't find a memory record for the subject of a mode change.
• Servers window type now consistent with rest of bot.
• Invalid Preferences error now returns more accurate error message(s).
• Fixed bug in Channels window that could cause problems if no channel was selected in the list.
• 'OK' button in botnet prefs window now saves the Botnet data file.
• Added close boxes to the settings windows, and they also close with Cmd-W now. On windows that let you cancel your changes, closing the window accepts the changes.
• Optimized the code that adds stuff to the message windows a bit.
• Modified the networking code a bit so while there's data coming in, ShadowBot processes it all until there isn't any more before processing other events and releasing CPU control. (In other words, this could make it faster on fast connctions.)
• Greatly optimized the server command parsing code.
Changes in 1.1f9 - 3/5/97 (Timeout: 4/1/97)
• Fixed CHK error in CYCLE.
• Worked around possible plugins crash when curLine<1 when executing.
• =~ (mask match) plugin operator.
• @BEEP plugin command.
• You can now disable the password requirment for DCC chat.
• If you have masters, you can specify a channel parameter for the WHOM command.
• Eggdrop-compatible botnet is nearly complete.
Changes in 1.1fc8 - 2/25/97 (Timeout: 4/1/97)
• Fixed bug in IDENT that would incorrectly set memory variables. Should work a bit better now.
• DEOP command now allows you to deop someone with the same protection level as you.
• BANLIST command now requires DCC chat.
• Fixed the crash when attempting to execute a script whose file is missing.
• Rewrote some of the connection code. ShadowBot now keeps track of all connections in a linked list that's easily managable, rather than a bunch of variables. (Except for DCCs.)
• CmdRequiresOps() checks to make sure the channel number is valid.
• KICK now checks to make sure the channel is valid.
• Fixed more CHK errors...
• Identd now only opens after the server has been contacted. The listener created listens only for that server, and no others.
• Fixed bug in checkKick() that could cause problems when a user not on the userlist was kicked with the KICK command. checkKick() now also returns an error message; its use will be implimented in a future version.
• Fixed a bug in the MakeMask() command that could create masks that looked like "*!**user@...".
• Removed debugging code that was in previous versions.
Changes in 1.1fc7 - 2/10/97 (Timeout: 3/1/97)
• Added "Don't Kick On Bans" option in channel manager.
• Flags for owner/masters in botnet now calculated correctly.
• Fixed bug when adding additional userhosts.
• Fixed a bug that could cause a possible crash and/or misidentification of users not in the userlist when they joined.
• Fixed a bug in the SHIT command that could cause crashes and incorrect bans.
• Fixed bugs when processing commands that could crash on commands from the console, and if for some reason, a memory record wasn't found (usually, from the console).
• Fixed a long-standing bug in the LEAVE command where it would ask you to specify a channel name when you gave it one.
• Fixed a bug in checkKick().
Changes in 1.1fc6 - 2/5/97 (Timeout: 3/1/97)
• When closing a DCC connection becase the person attempting it isn't on the userlist, use closeDCC() instead of closing it the old way (an internal /DCC CLOSE command).
• Now clearing memory records when connecting.
• When joining channels, mark everyone in the channel as not being in the channel, and rebuild that information from NAMES data.
• When joing channels, now ask for a banlist, and update the chan banlist accordingly.
• AddNewUAH() has some checks to prevent possible crashes.
• AddNumUAH() creates a new resource if the one it's attempting to add a userhost to isn't present.
• Shitlist level 4 bans should now be getting the dontremove flag set properly.
• Now act on 401/441 server messages- no such user/user not on channel.
• Fixed a nearly definite crash when a server made a mode change.
Changes in 1.1fc5r2 - 2/1/97 (Timeout: 3/1/97)
• In Folders dialog, no longer try and BlockMoveData if the length is zero. (This fixes the crash many people reported.) Also, only BlockMoveData the length, not 255.
• Partyline commands now work from the inputline.
Changes in 1.1fc5 - 1/29/97 (Timeout: 3/1/97)
• Recompiled with CodeWarrior 11
• WHOM now shows channel number (and name, if set).
• Some of the strings have changed with the addition of the partyline and removal of the old OpChat code. In order for some partyline strings to display properly, you need to reset your strings file.
• BOOT protection of owners now works. If you're an owner, and someone tries to boot you, you are notified. Toggle for allowing/disallowing remote boots should work now (although it's not possible to test that.)
• Rewrote BOOT. Implemented a bunch of private message code.
• Put in the balloon help for the Partyline Configuration window.
• Went through the code and changed all IF-THEN statments so they would use short-circuit operators for a speed boost; in some cases, this could also increase reliability.
• Display notices for the partyline from the (local) bot without the bot's name in the message. ("*** message", rather than "*** (BotNick) message").
NEW COMMANDS
• CHAT - When given from within DCC, allows you to move around the partyline. When given outside DCC, it causes the bot to DCC you.
• ASSOC - Lets you specify associations for partyline channels.
Changes in 1.1fc4 - 1/21/97 (Timeout: 2/1/97)
• UpdateMessageWindow() now checks to make sure the window, and not just its data,is != NIL before attempting to update it. (This shouldn't have been a problem, though.)
• Made some minor changes in the TCP base. Extremely minor speed bost. You probabally won't even see it.
• Some optimization in handleDialogUpdate().
• Now initing the lastSave variable. It wasn't being inited before, which could have caused the autosave of the data files to not work.
• Took out some unused global variables.
• Now UpdateResFile() for the strings file on a writeAllFiles(); updating and closing it on program exit. Perhaps this will fix the problems some had with crashes on access to the file?
• Reenabled the strings file.
• On server command #324 (channel modes), reset channel modes so bot updates correctly.
• $USERHOSTx in plugins now searches the userlist if it fails to find a match in memory.
• Mode response processing has been rewritten to be a bit more intelligent; it will attempt to stack multiple mode changes onto one mode command. The result is that in some cases where ShadowBot bans and kicks someone, the kick may come before the ban.
• bk/pbk scripts have changed have been merged into the bk script
• @@END in scripts stops parsing of the file.
• Updated connection code: now send out an updated USER command that will make some servers happy.
• Fixed DELUSERHOST (check the user specified for the u@h, not the user issuing the command!!)
• Users dialog now closes when you click "Done" and an entry isn't selected.
• Added "Bot" flag in Userlist. This is meant to be used with the botnet in 1.2.
• Took out the /DCC command. It wasn't working right, and using other commands are "safer" than using the /DCC commands.
• Put in some checking for the dcc close routines. Shouldn't crash now if a dcc connection is closed twice.
• Reimplimented the DCC Idle kick. Works much better now. :)
• When parsing plugins, it no longer gets confused when you use a tab to indent the begining of a line.
• /debug command now shows activity over DCC connections.
• Userlist is a bit more friendly when there are two users with the same nickname, but you still must resolve this before closing the window.
• Partyline. When entering DCC chat, you are put into an eggdrop-style partyline. 1.1 (final) will have this more refined, but as it is, it supports the WHOM and BOOT commands, and behaves as you would expect an eggdrop to.
NEW COMMANDS
• LISTDCC - lists open DCC connections
• KILLDCC - forces a DCC connection to close.
• WHOM - Lists users on the partyline.
• BOOT - Boots someone from the partyline. (The use of this, instead of KILLDCC, is preferred.)
Changes in 1.1fc3 - 1/8/97 (Timeout: 1/22/97)
• Took out a bunch of stuff relating to text styles for the message windows, saving 32k of RAM for each message window in the process.
• When a message window is deleted, set it to NIL for saftey.
• Default application partition size reduced to 1100k from 1200k.
• Progress bar now marked as purgeable.
• Modified sleep mode: now, rather than ignoring everything but the 'AWAKE' command, it processes everything (so the banlist gets updated, etc), but won't react to anything.
• AWAKE command now works from inputline.
• When someone was kicked, they weren't marked as not being in the channel anymore (oops!).
• Fixed no serverops option- I forgot to actually make the mode change (oops!).
• SEND command's nickname parameter is now optional; if it's ommitted, the file is sent to the person who gave the command.
• Userlist no longer allows you to set a user's nickname to one already in the list.
• ADDUSER command won't allow you to add a user if their nick is already in the list.
• Implemented a beta-version timeout "feature." To keep excessively old versions from being used, each beta will time out a few weeks after release.
NEW COMMANDS
• ADDUSER = ADD
• DELETEUSER = DEL
• STATUS = STATS/STAT/BOTSTATS
• SETACCESS = CLVL
• SETAUTOOP = CAUTO
• SETPROTECTION = CPROT
• MV+ = MASSV/MV
• CHANGECC = CC
Changes in 1.1fc2
• Commands coming from the bot to the bot (from the Inputline, for example) weren't getting the protection level set, so you couldn't deop, kick, ban, etc from the inputline.
• ShadowBot can now join channels with a key set, provided you set the key in connection settings.
• Fixed a bug in setting modes where limits and keys wouldn't be set.
• Fixed some miscelaneous bugs in mode procssing.
• Accidentally messed up opchat, and since it was getting completly rewritten in 1.2 anyways, I completely removed it.
• Updated all the copyright strings. *sigh*
• HELP COMMANDS displays a list of all commands.
• Took out the 'Connection Successful' message because it didn't mean anything.
• Fixed a bug in More Userhosts window where entries could be incorrectly saved.
• Don't create memory records if nick has a period in it.
• last[0]:=now when opening DCC connections; should prevent the bot from closing DCC chats for inactivity prematurely (like, right when the connection is opened.).
• If a friend was deopped by a server, don't try and kick the server.
• If server makes a ban I don't like, don't try to kick or ban the server (and get *!*@* in the process).
• After closing a file, set its refNum to zero to ensure that if a file is accidentally closed twice, some other file doesn't get closed, leading to problems... (see TN 1089).
• When closing DCC connection, don't call doPart since windows aren't created anymore.
• By popular demand, /me is back.
Changes in 1.1b30 (1.1fc1)
• Worked around a "bug" in Global Stage's implementation of mode changes, which could cause crashes. (If you're using Global Stage, shame on you! Use a REAL IRC server!)
• Users dialog could be opened more than once. (oops!)
• In trying to fix the Other Numeric Settings window, I accidentally broke window updating of lists and button outlines. Fixed.
• In LIST plugins, @OTHERWISE used as a tag will halt processing and output the text (as a "couldn't find the tag you wanted" error message).
• Can now close help window with Cmd-W.
Changes in 1.1b29
• DEOP command now checks protection levels before deopping.
• OP and DEOP commands check to make sure you gave them a valid channel now.
• Since the Access Level and Other Settings windows are identical in fuction, I merged their code into one procedure in an attempt to get the Other Settings window to work. (It does...why wasn't it working before?)
• Minor changes in fUser().
• When doing idle kicks, don't assume that the user isn't in the channel anymore when kicking.
• When doing idle kicks, make sure the bot has ops before attempting to kick.
• Fixed a rather stupid bug preventing the bot from checking /mode +o's for shitlist entries or strict opping.
• ACCESS command had last seen and added dates reversed.
• Hide Inputwindow in background option now working again.
• Optimized variable usage - nested procedures/functions use their own temporary variables when possible, rather than using parent's variables.
• Removed two temporary strings from command parsing data storage.
• Fixed a bug that could cause crashes if the users or shitlist files had a size of zero at launch time.